﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using AulaVirtualService.Dominio;
using AulaVirtualService.Persistencia;
using System.Data.SqlClient;

namespace AulaVirtualService
{
 

    public class InscripcionAvService : IInscripcionAvService
    {
        AulaVirtualService.CursoAvService cursoAv = new AulaVirtualService.CursoAvService();

        


        private InscripcionDAO Inscripcion = null;
        private InscripcionDAO InscripcionDAO
        {
            get
            {
                if (this.Inscripcion == null)
                {
                    this.Inscripcion = new InscripcionDAO();
                }
                return this.Inscripcion;
            }
        }

        SqlConnection cn = new SqlConnection("Data Source=(local);Initial Catalog=AulaVirtual;Integrated Security=SSPI");
        
        private int generarCodigo () 
        {
          cn.Open();
          SqlDataAdapter da = new SqlDataAdapter("select max(id_inscripcion) from Inscripciones" ,cn);
          SqlDataReader reader = da.SelectCommand.ExecuteReader();
          reader.Read();
          int codigo = reader.GetInt32(0);
         
          if (codigo == 0)
          {
              codigo = 1;
          }
          else
          {
                codigo = codigo + 1;
          }
          
          return codigo;    
          }

        private CursoDAO Curso = null;
        private CursoDAO CursoDAO
        {
            get
            {
                if (this.Curso == null)
                {
                    this.Curso = new CursoDAO();
                }
                return this.Curso;
            }
        }

        public Inscripcion CrearInscripcion(Inscripcion inscripcion)
        {
            Curso nombre_curso = cursoAv.obtenerCurso(inscripcion.id_curso);
            Inscripcion inscripcionCrear = new Inscripcion()
            {
                id_inscripcion= generarCodigo(),                
                id_curso = inscripcion.id_curso,
                nombre_curso=nombre_curso.nombre,
                email = inscripcion.email,
                duracionHoras= nombre_curso.duracionHoras
            };
            return InscripcionDAO.Crear(inscripcionCrear); 
        }

        public Inscripcion ObtenerInscripcion(int id)
        {
            return InscripcionDAO.Obtener(id);
        }

        public Inscripcion ModificarInscripcion(int id, int id_curso, string email, int duracionHoras)
        {
           //Curso cursoExistente = CursoDAO.Obtener(id_curso);
            Inscripcion inscripcionModificar = new Inscripcion()
            {
                id_inscripcion = id,
                id_curso = id_curso,
                email = email,
              //  instructor= instructor,
                duracionHoras = duracionHoras
            };
            return InscripcionDAO.Modificar(inscripcionModificar);
        }

        public List<Inscripcion> ListarInscripcion()
        {
        return InscripcionDAO.ListarTodos().ToList();
        }
        
        public List<Inscripcion> ListarInscripcionesPorUsuario(string email)
        {
            List<Inscripcion> Lista = InscripcionDAO.ListarTodos().ToList().FindAll(delegate(Dominio.Inscripcion elemento) {
                if (elemento.email == email)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            });

            return Lista; 
        }
    }
}